# # 实例属性
# class Province:
#     # 初始化方法
#     def __init__(self, country, province):
#         # 实例属性
#         self.country = country
#         self.province = province
#
#     #  实例方法
#     def print_info(self):
#         print(self.country, self.province)  # 通过self去访问  这个要方便很多
#         print(zs.country, zs.province)   # 通过每个对象去访问
#
#     # 实例方法
#     def asd(self):
#         pass
#
# zs = Province("中国", "湖南")
# zs.print_info()
#
# ls = Province("中国", "湖北")
# ls.print_info()


# class Demo():
#     __num = 0  # 私有属性   只能在类中访问
#     result = 0  # 公开属性
#
#     def count(self):
#         self.__num += 1
#         self.result += 1
#         print(self.__num)  # 打印私有属性
#
#     # 返回私有属性
#     def getnum(self):
#         return self.__num   # 将私有属性返回
#
#     # 疑问 ？？？
#     # 可以访问私有属性
#     def __str__(self):
#         # 不是说我们的return 不能返回数值  而是说我们的str魔法方法只能返回字符串类型的数据
#         return f'{str(self.__num)},{str(self.result)}'  # 是以元组的类型返回的
#         #  TypeError: __str__ returned non-string (type tuple)
# run = Demo()
# print(run)
# run.count()
# # print(run.result)
# # print(run.__num)    # 报错，不能在类外面访问
# __num = run.getnum() # 对象.方法的调用出
# print(__num)

class func:
    def fun1(self):
        print("1")

    # 私有方法
    def __fun2(self):
        print("2")

    # 自定义的实例方法
    def fun3(self):
        self.__fun2()


f = func()

f.fun1()
# f.__fun2()
f.fun3()
"""python中没有真正意义上的私有"""
